﻿using Estsh.Core.Base;
using Estsh.Core.Services;
using Estsh.Core.Model.Result;
using Estsh.Core.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
using Estsh.Core.Model.Extend.Models;

namespace Estsh.Core.Wms.IServices
{
    public interface IInpdlineService : IBaseService<BaseEntity>
    {
        /// <summary>
        /// 获取生产领料-订单选择列表
        /// </summary>
        /// <param name="onLine">是否上线操作</param>
        /// <returns></returns>
        public List<WmsMoveHeader> CheckMoveHeader(string onLine);

        /// <summary>
        /// 获取领料上线-订单选择列表
        /// </summary>
        /// <param name="onLine"></param>
        /// <returns></returns>
        public List<WmsMoveHeader> CheckOnlineMoveHeader(string onLine,string carton_no);

        /// <summary>
        /// 通过单号，获得信息列表
        /// </summary>
        /// <param name="orderNo"></param>
        /// <returns></returns>
        public List<WmsMoveDetail_Extend> CheckMoveDetail(string orderNo);

        /// <summary>
        /// 上料列表查询
        /// </summary>
        /// <param name="orderNo"></param>
        /// <returns></returns>
        public List<WmsMoveDetail> CheckMoveDetail2(string orderNo);
        /// <summary>
        /// 执行配料操作
        /// </summary>
        /// <param name="loginId"></param>
        /// <param name="orderNo"></param>
        /// <param name="cartonNo"></param>
        /// <param name="isSplit"></param>
        /// <returns></returns>
        public string UpdatePick(string loginId, string orderNo, string cartonNo, string isSplit);

        /// <summary>
        /// 配料完成提交
        /// </summary>
        /// <param name=""></param>
        /// <param name=""></param>
        /// <returns></returns>
        public string BatchingCompleted(string loginId, string orderNo);

        /// <summary>
        /// 确认库位状态
        /// </summary>
        /// <param name="locate"></param>
        /// <param name="orderNo"></param>
        /// <returns></returns>
        public string CheckLocateStatus(string locate, string orderNo);

        /// <summary>
        /// 执行上料操作
        /// </summary>
        /// <param name="loginId"></param>
        /// <param name="orderNo"></param>
        /// <param name="cartonNo"></param>
        /// <param name="locate"></param>
        /// <returns></returns>
        public string UpdatePickOnline(string loginId, string orderNo, string cartonNo, string locate);

        /// <summary>
        /// 大件拣选列表
        /// </summary>
        /// <param name="Line"></param>
        /// <param name="MaterialType"></param>
        /// <returns></returns>
        public List<WmsPullingOrder> GetPullingOrderList(string Line, string MaterialType);

        /// <summary>
        /// 大件拣选明细列表
        /// </summary>
        /// <param name="orderNo"></param>
        /// <returns></returns>
        public List<WmsPullingOrderDetail> GetPullingOrderDetails(string orderNo);

        /// <summary>
        /// 获得RK列表
        /// </summary>
        /// <param name="RKNO"></param>
        /// <returns></returns>
        public string CheckRK(string RKNO, string orderNo, string loginId, string isUpdate, string UpdateNum);

        public string CheckMaterial(string cartonNo, string orderNo, string updateNum, string loginId);

        public string CheckMaterial(string cartonNo, string orderNo, string isUpdate, string loginId, string UpdateNum);


        public string SetMoveOrderClose(string order);

        public SetObjectDetail CheckRackOrcartNo(string loginId, string orderNo, string cartonNo, string locate);

        public SetObjectDetail CheckSplitQty(string loginId, string cartNo, string orderNo, string SplitQty, string rackOrCartNo);

        public SetObjectDetail CheckDestCartonOrRack(string orderNo, string rackOrCartNo, string cartonNo, string destRackNo, string SplitQty, string loginId);

        public SetObjectDetail FullBoxPicking(string orderNo, string rackOrCartNo, string loginId);

        public SetObjectDetail CheckOnlineRackOrcartNo(string loginId, string orderNo, string cartonNo,string locate);
    }
}
